
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;

/* Une frame qui propose au joueur plusieurs actions a effectuer */
class Depart extends JFrame implements ActionListener
{

/* ATTRIBUTS */
    private JPanel panneau;
    private AudioLabi audio;


/* CONSTRUCTEUR */
    public Depart()
    {
        super("Labyrinte Sonore : AUDIO LABY");
        setSize(this.getToolkit().getScreenSize());
        setResizable(false);
        panneauCreator();
        setContentPane(panneau);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setFocusable(true);
        addKeyListener(new RaccourcisClavierDepart(this));

        try
        {
          audio=new AudioLabi();
        }
        catch(Exception e)
        {
          System.out.println("Erreur de chargement des sons");
        }
        audio.stop();
        audio.bienvenue();
    }

    public Depart(AudioLabi a)
    {
        super("Labyrinte Sonore : AUDIO LABY");
        audio=a;
        setSize(this.getToolkit().getScreenSize());
        setResizable(false);
        panneauCreator();
        setContentPane(panneau);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setFocusable(true);
        addKeyListener(new RaccourcisClavierDepart(this));

       audio.stop();
       audio.bienvenuePlusCourt();
    }


    /* Cree le panneau avec les quatres boutons */
    private void panneauCreator()
    {
		String ressourcePath = StaticFields.ressourcePath;
      /* On cree un panneau compose de deux lignes et de deux colonnes */
        panneau = new JPanel();
        panneau.setLayout(new GridLayout(2,2));
        JButton boutontemp = null;

        //Bouton Nouveau Jeu, raccourci clavier: J
        boutontemp = new JButton(new ImageIcon(ressourcePath + "images/nouveaujeu.gif"));
        boutontemp.getAccessibleContext().setAccessibleDescription("nouveauJeu");
        boutontemp.addActionListener(this);
        panneau.add(boutontemp);

        //Bouton Aide, raccourci clavier: ESPACE
        boutontemp = new JButton(new ImageIcon(ressourcePath + "images/aide.gif"));
        boutontemp.getAccessibleContext().setAccessibleDescription("aide");
        boutontemp.addActionListener(this);
        panneau.add(boutontemp);

        //Bouton A Propos, raccourci clavier: F
        boutontemp = new JButton(new ImageIcon(ressourcePath + "images/apropos.gif"));
        boutontemp.getAccessibleContext().setAccessibleDescription("apropos");
        boutontemp.addActionListener(this);
        panneau.add(boutontemp);

        //Bouton Quitter, raccourci clavier: ESC
        boutontemp = new JButton(new ImageIcon(ressourcePath + "images/quitter.gif"));
        boutontemp.getAccessibleContext().setAccessibleDescription("quitter");
        boutontemp.addActionListener(this);
        panneau.add(boutontemp);

    }

/* METHODES DE TRAITEMENT D'EVENEMENTS */

    /* Identifie le bouton clique et lance la bonne methode en consequence */
    public void actionPerformed(ActionEvent ae)
    {
        JButton source = (JButton) ae.getSource();
        if ( source.getAccessibleContext().getAccessibleDescription().equals("nouveauJeu"))
          nouveauJeu();
        if ( source.getAccessibleContext().getAccessibleDescription().equals("aide"))
          aide();
        if ( source.getAccessibleContext().getAccessibleDescription().equals("apropos"))
          apropos();
        if ( source.getAccessibleContext().getAccessibleDescription().equals("quitter"))
          quitter();
    }

/* ACTIONS */

    /* Lance une nouvelle partie dans une nouvelle Frame */
    public void nouveauJeu()
    {
        audio.stop();
        Difficulte choix = new Difficulte(audio);
        choix.show();
    }

    /* Ouvre une nouvelle JFrame avec les commandes du jeu */
    public void aide()
    {
      audio.stop();
      Aide aide = new Aide(audio);
      aide.show();
    }

    /* Ouvre une fenetre pour presenter les auteurs du projet */
    public void apropos()
    {
      audio.stop();
      Apropos apropos = new Apropos(audio);
      apropos.show();
    }

    /* Quitte l'application */
    public void quitter()
    {
        System.exit(0);
    }

}

/* Raccourcis claviers pour naviguer */
class RaccourcisClavierDepart extends KeyAdapter
  {

    private Depart game;

    public RaccourcisClavierDepart(Depart jeu)
    {
        super();
        game = jeu;
    }

    public void keyPressed(KeyEvent ke)
    {
        switch(ke.getKeyCode())
        {
        case KeyEvent.VK_J:
            game.nouveauJeu();
            break;
        case KeyEvent.VK_SPACE:
            game.aide();
            break;
        case KeyEvent.VK_F:
            game.apropos();
            break;
        case KeyEvent.VK_ESCAPE:
            game.quitter();
            break;
        }
    }
}
